home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / news / transport / cnews / patches / CR.A next >
Encoding:
Text File  |  1994-10-18  |  53.2 KB  |  2,092 lines

  1. Newsgroups: news.software.b
  2. Subject: C News patch CR.A
  3.  
  4. This is the first patch for the Cleanup Release.  The distribution files
  5. on ftp.cs.toronto.edu and zoo.toronto.edu have been updated to match.
  6. See the README.changes diff below for what's been done.
  7.  
  8. start of patch CR.A
  9. (suggested archive name:  patchCR.A)
  10. apply with   patch -p0 <thisfile
  11.  
  12. *** README.mastercopy    Mon Oct 17 23:09:00 1994
  13. --- README    Mon Oct 17 22:43:27 1994
  14. ***************
  15. *** 1,4 ****
  16. ! This is the Cleanup Release of C News.                Sept 1994
  17.   
  18.   The current C News distribution can be retrieved by anonymous FTP from
  19.   ftp.cs.toronto.edu (file pub/c-news/c-news.tar.Z) or ftp.zoo.toronto.edu
  20. --- 1,4 ----
  21. ! This is the Cleanup Release of C News, with patch CR.A.        Oct 1994
  22.   
  23.   The current C News distribution can be retrieved by anonymous FTP from
  24.   ftp.cs.toronto.edu (file pub/c-news/c-news.tar.Z) or ftp.zoo.toronto.edu
  25.  
  26.  
  27.  
  28. *** README.changes.mastercopy    Mon Oct 17 23:09:01 1994
  29. --- README.changes    Mon Oct 17 23:03:03 1994
  30. ***************
  31. *** 1,5 ****
  32. ! These are just the high points.
  33.   
  34.   First, the source has been extensively reorganized, so don't bother diffing
  35.   against older releases.
  36.   
  37. --- 1,16 ----
  38. ! High points of patch CR.A:
  39. ! Quiz now pays attention to the compiler-name and config-file-location
  40. ! question answers.  The PATH bug in control-message handling has been fixed.
  41. ! Upact now checks for duplicate newsgroups in active, which foul it up.
  42. ! Doexpire -e means expire only, don't run upact and expov.  Newsrun uses
  43. ! suffix .t, rather than .Z.t, for decompressed compressed batches.  Expov
  44. ! reports articles with numbers below min (which mean something's wrong).
  45. ! "make cmp" tests whether spacefor works.  The names of the batcher local
  46. ! locks have changed.  Lots of little portability fixes and minor bug fixes.
  47. ! Overviews are still mandatory, bash is still broken; fixes for these later.
  48.   
  49. + High points of the Cleanup Release:
  50.   First, the source has been extensively reorganized, so don't bother diffing
  51.   against older releases.
  52.   
  53. ***************
  54. *** 69,75 ****
  55.   
  56.   Relaynews, apart from being faster, now copes fully with article trees
  57.   split across file systems, doing symbolic links and/or data copying as
  58. ! necessary.
  59.   
  60.   There is support for SVR4 statvfs() space checking and UUCP queue checking.
  61.   Shell-file locking has been organized and packaged up for cleanliness and
  62. --- 80,86 ----
  63.   
  64.   Relaynews, apart from being faster, now copes fully with article trees
  65.   split across file systems, doing symbolic links and/or data copying as
  66. ! necessary.  RELAYNEWS OPTIONS HAVE CHANGED.
  67.   
  68.   There is support for SVR4 statvfs() space checking and UUCP queue checking.
  69.   Shell-file locking has been organized and packaged up for cleanliness and
  70.  
  71.  
  72.  
  73. *** README.install.mastercopy    Mon Oct 17 23:09:01 1994
  74. --- README.install    Sun Oct  9 22:18:38 1994
  75. ***************
  76. *** 10,16 ****
  77.   2. "make".  This will build all the software.  If you asked for the stdio
  78.       speedups, it will check them out before actually deciding to rely
  79.       on them; don't panic if you see a messy-looking failure but make
  80. !     charges onward -- it knows what it's doing.
  81.   
  82.   3. (optional but recommended) "make r".  This will run regression tests.
  83.       They take a while.  Errors that don't cause make to stop are not
  84. --- 10,19 ----
  85.   2. "make".  This will build all the software.  If you asked for the stdio
  86.       speedups, it will check them out before actually deciding to rely
  87.       on them; don't panic if you see a messy-looking failure but make
  88. !     charges onward -- it knows what it's doing.  Note:  getting the
  89. !     command search path set up properly for compiling is up to you --
  90. !     the search path which quiz asks about is used only for *running*
  91. !     them.
  92.   
  93.   3. (optional but recommended) "make r".  This will run regression tests.
  94.       They take a while.  Errors that don't cause make to stop are not
  95. ***************
  96. *** 21,27 ****
  97.       NEWSBIN can be owned by most anyone; the rest should be owned
  98.       by the news-database owner.
  99.   
  100. ! 5. Running as the NEWSBIN owner, "make install".
  101.   
  102.   6. Running as the news-database owner, "make setup".  These makes, by the
  103.       way, are generally fairly careful not to step on existing files
  104. --- 24,32 ----
  105.       NEWSBIN can be owned by most anyone; the rest should be owned
  106.       by the news-database owner.
  107.   
  108. ! 5. Running as the NEWSBIN owner, "make install".  Note:  getting the
  109. !     umask set up properly for installation is up to you -- the umask
  110. !     which quiz asks about is used only for *running* the software.
  111.   
  112.   6. Running as the news-database owner, "make setup".  These makes, by the
  113.       way, are generally fairly careful not to step on existing files
  114. ***************
  115. *** 38,45 ****
  116.       news-database owner, and mode rwsr-sr-x (both s's are mandatory).
  117.   
  118.   10. Go to NEWSCTL and edit some control files, at least:  batchparms,
  119. !     explist, mailname, mailpaths, organization, postdefltgroup,
  120. !     readnews.ctl, sys, whoami.  In particular, editing mailname
  121.       (to the name appropriate in From headers) and whoami (to the news
  122.       name of the system) is MANDATORY at this point, unless you're
  123.       updating an old system (in which case the old ones will still
  124. --- 43,50 ----
  125.       news-database owner, and mode rwsr-sr-x (both s's are mandatory).
  126.   
  127.   10. Go to NEWSCTL and edit some control files, at least:  batchparms,
  128. !     controlperm, explist, mailname, mailpaths, organization,
  129. !     postdefltgroup, readnews.ctl, sys, whoami.  Notably, editing mailname
  130.       (to the name appropriate in From headers) and whoami (to the news
  131.       name of the system) is MANDATORY at this point, unless you're
  132.       updating an old system (in which case the old ones will still
  133.  
  134.  
  135.  
  136. *** quiz.mastercopy    Mon Oct 17 23:09:02 1994
  137. --- quiz    Sun Oct  9 22:16:45 1994
  138. ***************
  139. *** 118,125 ****
  140.   
  141.   cat <<!
  142.   
  143. ! C News normally uses a umask of 022, turning off only the others-write
  144. ! and group-write bits in the permissions of files used.  (The correspondence
  145.   between bits and number is:  rwx = 421, so turning off group-write bits and
  146.   all others-access bits would be a mask of 027, for example.)  Usually
  147.   a umask of 002 or 022 is appropriate.
  148. --- 118,125 ----
  149.   
  150.   cat <<!
  151.   
  152. ! C News normally uses a umask of 022, turning off only the others-write and
  153. ! group-write bits in the permissions of files it creates.  (The correspondence
  154.   between bits and number is:  rwx = 421, so turning off group-write bits and
  155.   all others-access bits would be a mask of 027, for example.)  Usually
  156.   a umask of 002 or 022 is appropriate.
  157.  
  158.  
  159.  
  160. *** batch/sendbatches.mastercopy    Mon Oct 17 23:09:03 1994
  161. --- batch/sendbatches    Mon Oct 17 12:32:16 1994
  162. ***************
  163. *** 122,130 ****
  164.       fi
  165.   
  166.       # lock against multiple simultaneous batchers for this site
  167. !     if lock -o ./LOCKbatch $$
  168.       then
  169. !         llock="$here/LOCKbatch"
  170.       else
  171.           continue    # try the next site
  172.       fi
  173. --- 122,130 ----
  174.       fi
  175.   
  176.       # lock against multiple simultaneous batchers for this site
  177. !     if lock -o ./LOCKb $$
  178.       then
  179. !         llock="$here/LOCKb"
  180.       else
  181.           continue    # try the next site
  182.       fi
  183. ***************
  184. *** 230,236 ****
  185.   
  186.       # unlock this site
  187.       llock=
  188. !     unlock ./LOCKbatch
  189.   done
  190.   
  191.   echo "`date`, sendbatches $$ $args" >>$log
  192. --- 230,236 ----
  193.   
  194.       # unlock this site
  195.       llock=
  196. !     unlock ./LOCKb
  197.   done
  198.   
  199.   echo "`date`, sendbatches $$ $args" >>$log
  200.  
  201.  
  202.  
  203. *** conf/maker.mastercopy    Mon Oct 17 23:09:03 1994
  204. --- conf/maker    Tue Oct  4 14:53:59 1994
  205. ***************
  206. *** 30,43 ****
  207.       fi
  208.   fi
  209.   
  210. ! tmp=tmp.maker
  211.   status=1
  212. ! trap "rm -f $tmp ; trap 0 ; exit $status" 0 1 2 15
  213.   
  214. ! awk '    BEGIN { includeline = 0 }
  215.       $0 == "# =()<@<INCLUDE>@>()=" { includeline = NR + 1 }
  216. !     NR == includeline { system("cat '"$CONFIG_MAKE"'") ; next }
  217. !     { print }' $mfs >$tmp || exit
  218. ! $REALMAKE -f $tmp $options $*
  219.   status=$?
  220.   # and the exit trap does the actual exiting
  221. --- 30,50 ----
  222.       fi
  223.   fi
  224.   
  225. ! tmp=/tmp/maker$$
  226.   status=1
  227. ! trap "rm -f $tmp ; trap 0 ; exit \$status" 0 1 2 15
  228.   
  229. ! ( cat $CONFIG_MAKE ; echo '===' ; cat $mfs ) |
  230. ! awk '    BEGIN { includeline = 0 ; inconfig = 1 }
  231. !     $0 ~ /^===$/ && inconfig == 1 { inconfig = 0 ; next }
  232. !     inconfig == 1 { config[++nconfig] = $0 ; next }
  233.       $0 == "# =()<@<INCLUDE>@>()=" { includeline = NR + 1 }
  234. !     NR == includeline {
  235. !         for (i = 1; i <= nconfig; i++)
  236. !             print config[i]
  237. !         next
  238. !     }
  239. !     { print }' >$tmp
  240. ! ${REALMAKE-make} -f $tmp $options $*
  241.   status=$?
  242.   # and the exit trap does the actual exiting
  243.  
  244.  
  245.  
  246. *** conf/subst.mastercopy    Mon Oct 17 23:09:04 1994
  247. --- conf/subst    Sun Oct  2 00:41:48 1994
  248. ***************
  249. *** 62,75 ****
  250.   
  251.       # generate the new version
  252.       trap "rm -f $new; exit 1" 1 2 15
  253. !     sed "/=()<.*>()=/{
  254.           h
  255.           n
  256.           g
  257.           s/.*=()<//
  258.           s/>()=.*//
  259. !         $them
  260. !     }" $f >$new
  261.   
  262.       # substitute new for old, if necessary
  263.       if cmp -s $new $f
  264. --- 62,77 ----
  265.   
  266.       # generate the new version
  267.       trap "rm -f $new; exit 1" 1 2 15
  268. !     # the ''""'' business is more robust against stupid shell implementors
  269. !     # than just ""
  270. !     sed '/=()<.*>()=/{
  271.           h
  272.           n
  273.           g
  274.           s/.*=()<//
  275.           s/>()=.*//
  276. !         '"$them"'
  277. !     }' $f >$new
  278.   
  279.       # substitute new for old, if necessary
  280.       if cmp -s $new $f
  281.  
  282.  
  283.  
  284. *** conf/subst.all.mastercopy    Mon Oct 17 23:09:04 1994
  285. --- conf/subst.all    Mon Oct 17 23:03:31 1994
  286. ***************
  287. *** 6,11 ****
  288. --- 6,12 ----
  289.   batch/batchsplitter
  290.   batch/bpfind
  291.   batch/sendbatches
  292. + batch/usenntpxmit
  293.   batch/viainews
  294.   conf/config
  295.   conf/config.r
  296. ***************
  297. *** 97,100 ****
  298.   util/staleness
  299.   util/touchlock
  300.   util/unlock
  301. - batch/usenntpxmit
  302. --- 98,100 ----
  303.  
  304.  
  305.  
  306. *** conf/makefile.mastercopy    Tue Oct 18 12:44:56 1994
  307. --- conf/makefile    Tue Oct 18 12:26:26 1994
  308. ***************
  309. *** 1,18 ****
  310.   # =()<@<INCLUDE>@>()=
  311.   .include "../include/config.make"
  312.   
  313. - LIBDIRS=include libc libcnews libdbz libfake libbig
  314. - PDIRS=batch expire explode inject input maint \
  315. -     nov readnews relay util
  316. - CMPDIRS=batch conf expire input man misc relay rna explode inject
  317. - RDIRS=util batch expire input nov relay explode inject maint libdbz
  318. - SHS=doit.root doit.bin doit.news again.root
  319.   A=$(NEWSARTS)
  320.   C=$(NEWSCTL)
  321.   NDIRS=$(A) $(A)/in.coming $(A)/in.coming/bad $(A)/out.master $(C) $(C)/bin
  322.   
  323. ! EGS=active.eg active.times.eg mailname.eg mailpaths.eg organization\
  324.       sys.eg whoami.eg
  325.   ALL=$(EGS) report.ctl crontab $(SERVER)
  326.   
  327. --- 1,11 ----
  328.   # =()<@<INCLUDE>@>()=
  329.   .include "../include/config.make"
  330.   
  331.   A=$(NEWSARTS)
  332.   C=$(NEWSCTL)
  333.   NDIRS=$(A) $(A)/in.coming $(A)/in.coming/bad $(A)/out.master $(C) $(C)/bin
  334.   
  335. ! EGS=active.eg active.times mailname.eg mailpaths.eg organization\
  336.       sys.eg whoami.eg
  337.   ALL=$(EGS) report.ctl crontab $(SERVER)
  338.   
  339. ***************
  340. *** 21,30 ****
  341.   
  342.   install:    $(ALL)
  343.   
  344.   setup:    $(ALL)
  345.       $(MKDIR) $(NEWSCTL)/bin
  346.       $(TO) -n $(NEWSCTL) report.ctl $(SERVER)
  347. !     $(TO) $(NEWSCTL)/bin config
  348.       $(TO) -e -n $(NEWSCTL) $(EGS)
  349.       touch $(NEWSCTL)/history
  350.       if test ! -s $(NEWSCTL)/history.dir ;\
  351. --- 14,25 ----
  352.   
  353.   install:    $(ALL)
  354.   
  355. + LASTGROUP=`egrep -v = $(NEWSCTL)/active | tr . / | sed -n '$$s/ .*//p'`
  356.   setup:    $(ALL)
  357.       $(MKDIR) $(NEWSCTL)/bin
  358.       $(TO) -n $(NEWSCTL) report.ctl $(SERVER)
  359. !     $(TO) `echo $(NEWSCONFIG) | sed 's;/[^/]*$$;;'` config
  360.       $(TO) -e -n $(NEWSCTL) $(EGS)
  361.       touch $(NEWSCTL)/history
  362.       if test ! -s $(NEWSCTL)/history.dir ;\
  363. ***************
  364. *** 31,38 ****
  365.       then \
  366.           $(NEWSBIN)/dbz $(NEWSCTL)/history ;\
  367.       fi
  368. !     if test `wc -l <$(NEWSCTL)/active` -eq `wc -l <active.eg` ;\
  369.       then \
  370.           $(NEWSBIN)/maint/adddirs ;\
  371.       fi
  372.   
  373. --- 26,35 ----
  374.       then \
  375.           $(NEWSBIN)/dbz $(NEWSCTL)/history ;\
  376.       fi
  377. !     if test -d $(NEWSARTS)/$(LASTGROUP) -a -d $(NEWSOV)/$(LASTGROUP) ;\
  378.       then \
  379. +         : no adddirs needed ;\
  380. +     else \
  381.           $(NEWSBIN)/maint/adddirs ;\
  382.       fi
  383.   
  384. ***************
  385. *** 42,48 ****
  386.   cmp:    $(ALL)
  387.       @$(CF) $(UID) $(GID) '^drwx' $(NDIRS)
  388.       @$(IN) -i $(NEWSCTL) report.ctl
  389. !     @$(IN) $(NEWSCTL)/bin config
  390.       test " `cat $(NEWSCTL)/whoami`" != " nosuchsite" ;
  391.       test " `cat $(NEWSCTL)/mailname`" != " no.such.domain" ;
  392.       test -r $(NEWSCTL)/history ;
  393. --- 39,45 ----
  394.   cmp:    $(ALL)
  395.       @$(CF) $(UID) $(GID) '^drwx' $(NDIRS)
  396.       @$(IN) -i $(NEWSCTL) report.ctl
  397. !     @$(IN) `echo $(NEWSCONFIG) | sed 's;/[^/]*$$;;'` config
  398.       test " `cat $(NEWSCTL)/whoami`" != " nosuchsite" ;
  399.       test " `cat $(NEWSCTL)/mailname`" != " no.such.domain" ;
  400.       test -r $(NEWSCTL)/history ;
  401. ***************
  402. *** 49,60 ****
  403.       test -s $(NEWSCTL)/history.dir ;
  404.       test -r $(NEWSCTL)/history.pag ;
  405.       @$(IN) $(NEWSCTL) versionname
  406.   
  407.   mx:
  408.       $(MX) checkfile cmpto config.r cpto inall libcheck libcmp maker
  409.       $(MX) mkdirs subst update.*
  410.   
  411. ! active.times.eg:    active.eg
  412.       sed 's/ .*/ 0 unknown/' active.eg >$@
  413.   
  414.   crontab:    cron.proto
  415. --- 46,58 ----
  416.       test -s $(NEWSCTL)/history.dir ;
  417.       test -r $(NEWSCTL)/history.pag ;
  418.       @$(IN) $(NEWSCTL) versionname
  419. +     test -d $(NEWSARTS)/$(LASTGROUP) -a -d $(NEWSOV)/$(LASTGROUP) ;
  420.   
  421.   mx:
  422.       $(MX) checkfile cmpto config.r cpto inall libcheck libcmp maker
  423.       $(MX) mkdirs subst update.*
  424.   
  425. ! active.times:    active.eg
  426.       sed 's/ .*/ 0 unknown/' active.eg >$@
  427.   
  428.   crontab:    cron.proto
  429. ***************
  430. *** 73,76 ****
  431.   r rclean:    $(ALL)
  432.   
  433.   clean:
  434. !     rm -f active.times.eg crontab server report.ctl
  435. --- 71,74 ----
  436.   r rclean:    $(ALL)
  437.   
  438.   clean:
  439. !     rm -f active.times crontab server report.ctl
  440.  
  441.  
  442.  
  443. *** conf/versionname.mastercopy    Mon Oct 17 23:09:05 1994
  444. --- conf/versionname    Mon Oct 17 22:42:55 1994
  445. ***************
  446. *** 1 ****
  447. ! Cleanup Release
  448. --- 1 ----
  449. ! Cleanup Release, with patch CR.A
  450.  
  451.  
  452.  
  453. *** conf/useanswers.mastercopy    Mon Oct 17 23:09:06 1994
  454. --- conf/useanswers    Mon Oct  3 13:42:55 1994
  455. ***************
  456. *** 27,33 ****
  457.       echo "# how to include ../include/config.make"
  458.       case "$include" in
  459.       svr4)    echo 'INCLUDE        include ../include/config.make' ;;
  460. !     bsd)    echo 'INCLUDE        .include "../include/config.make"' ;;
  461.       *)    echo 'Internal error, aborting...' >&2
  462.           exit 1
  463.           ;;
  464. --- 27,33 ----
  465.       echo "# how to include ../include/config.make"
  466.       case "$include" in
  467.       svr4)    echo 'INCLUDE        include ../include/config.make' ;;
  468. !     bsd|noway)    echo 'INCLUDE        .include "../include/config.make"' ;;
  469.       *)    echo 'Internal error, aborting...' >&2
  470.           exit 1
  471.           ;;
  472. ***************
  473. *** 44,50 ****
  474.           exit 1
  475.       fi
  476.       cp $tf $uamakeinc || exit 1
  477. -     echo done
  478.   fi
  479.   
  480.   test " $uaverbose" = " yes" && echo "building $uasubsts..."
  481. --- 44,49 ----
  482. ***************
  483. *** 69,75 ****
  484.           exit 1
  485.       fi
  486.       cp $tf $uasubsts || exit 1
  487. -     echo done
  488.   fi
  489.   
  490.   test " $uaverbose" = " yes" && echo "building $uacm..."
  491. --- 68,73 ----
  492. ***************
  493. *** 84,89 ****
  494. --- 82,89 ----
  495.       echo "NEWSBIN=$newsbin"
  496.       echo "# =()<NEWSCTL=@<NEWSCTL>@>()="
  497.       echo "NEWSCTL=$newsctl"
  498. +     echo "# =()<NEWSCONFIG=@<NEWSCONFIG>@>()="
  499. +     echo "NEWSCONFIG=$newsconfig"
  500.       echo
  501.       echo "# workaround for System V make bug"
  502.       echo "SHELL=/bin/sh"
  503. ***************
  504. *** 109,115 ****
  505.       echo
  506.       echo "# directories etc."
  507.       echo "CONF=../conf"
  508. !     echo "MAKE=$make"
  509.       echo "TO=\$(CONF)/cpto"
  510.       echo "IN=\$(CONF)/cmpto \$(CMPOPT)"
  511.       echo "CF=\$(CONF)/checkfile \$(CMPOPT)"
  512. --- 109,122 ----
  513.       echo
  514.       echo "# directories etc."
  515.       echo "CONF=../conf"
  516. !     case "$include" in
  517. !     noway)    echo "MAKE=../conf/maker"    ;;
  518. !     *)    echo "MAKE=$make"        ;;
  519. !     esac
  520. !     case "$cc" in
  521. !     ''|cc)    ;;
  522. !     *)    echo "CC=$cc"    ;;
  523. !     esac
  524.       echo "TO=\$(CONF)/cpto"
  525.       echo "IN=\$(CONF)/cmpto \$(CMPOPT)"
  526.       echo "CF=\$(CONF)/checkfile \$(CMPOPT)"
  527. ***************
  528. *** 172,178 ****
  529.           exit 1
  530.       fi
  531.       cp $tf $uacm || exit 1
  532. -     echo done
  533.   fi
  534.   
  535.   rm -f $tf
  536. --- 179,184 ----
  537.  
  538.  
  539.  
  540. *** ctl/delsendsys.mastercopy    Mon Oct 17 23:09:07 1994
  541. --- ctl/delsendsys    Tue Oct  4 14:46:52 1994
  542. ***************
  543. *** 4,10 ****
  544.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  545.   . ${NEWSCONFIG-/etc/news/bin/config}
  546.   
  547. ! PATH=$NEWSCTL/bin:$NEWSBIN:$NEWSPATH ; export PATH
  548.   umask $NEWSUMASK
  549.   
  550.   replyto="`newsreply`"
  551. --- 4,10 ----
  552.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  553.   . ${NEWSCONFIG-/etc/news/bin/config}
  554.   
  555. ! PATH=$NEWSCTL/bin:$NEWSBIN/relay:$NEWSBIN:$NEWSPATH ; export PATH
  556.   umask $NEWSUMASK
  557.   
  558.   replyto="`newsreply`"
  559.  
  560.  
  561.  
  562. *** ctl/sendsys.mastercopy    Mon Oct 17 23:09:07 1994
  563. --- ctl/sendsys    Tue Oct  4 14:47:11 1994
  564. ***************
  565. *** 4,10 ****
  566.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  567.   . ${NEWSCONFIG-/etc/news/bin/config}
  568.   export NEWSCTL NEWSBIN NEWSARTS
  569. ! PATH=$NEWSCTL/bin:$NEWSBIN:$NEWSPATH ; export PATH
  570.   umask $NEWSUMASK
  571.   
  572.   canonhdr >/tmp/ctl$$
  573. --- 4,10 ----
  574.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  575.   . ${NEWSCONFIG-/etc/news/bin/config}
  576.   export NEWSCTL NEWSBIN NEWSARTS
  577. ! PATH=$NEWSCTL/bin:$NEWSBIN/relay:$NEWSBIN:$NEWSPATH ; export PATH
  578.   umask $NEWSUMASK
  579.   
  580.   canonhdr >/tmp/ctl$$
  581.  
  582.  
  583.  
  584. *** ctl/delversion.mastercopy    Mon Oct 17 23:09:08 1994
  585. --- ctl/delversion    Tue Oct  4 14:47:01 1994
  586. ***************
  587. *** 4,10 ****
  588.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  589.   . ${NEWSCONFIG-/etc/news/bin/config}
  590.   
  591. ! PATH=$NEWSCTL/bin:$NEWSBIN:$NEWSPATH ; export PATH
  592.   umask $NEWSUMASK
  593.   
  594.   replyto="`newsreply`"
  595. --- 4,10 ----
  596.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  597.   . ${NEWSCONFIG-/etc/news/bin/config}
  598.   
  599. ! PATH=$NEWSCTL/bin:$NEWSBIN/relay:$NEWSBIN:$NEWSPATH ; export PATH
  600.   umask $NEWSUMASK
  601.   
  602.   replyto="`newsreply`"
  603.  
  604.  
  605.  
  606. *** ctl/version.mastercopy    Mon Oct 17 23:09:08 1994
  607. --- ctl/version    Tue Oct  4 14:47:22 1994
  608. ***************
  609. *** 4,10 ****
  610.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  611.   . ${NEWSCONFIG-/etc/news/bin/config}
  612.   
  613. ! PATH=$NEWSCTL/bin:$NEWSBIN:$NEWSPATH ; export PATH
  614.   umask $NEWSUMASK
  615.   
  616.   canonhdr >/tmp/ctl$$
  617. --- 4,10 ----
  618.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  619.   . ${NEWSCONFIG-/etc/news/bin/config}
  620.   
  621. ! PATH=$NEWSCTL/bin:$NEWSBIN/relay:$NEWSBIN:$NEWSPATH ; export PATH
  622.   umask $NEWSUMASK
  623.   
  624.   canonhdr >/tmp/ctl$$
  625.  
  626.  
  627.  
  628. *** ctl/dodelayed.mastercopy    Mon Oct 17 23:09:08 1994
  629. --- ctl/dodelayed    Tue Oct  4 14:44:51 1994
  630. ***************
  631. *** 3,9 ****
  632.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  633.   . ${NEWSCONFIG-/etc/news/bin/config}
  634.   
  635. ! PATH=$NEWSCTL/bin:$NEWSBIN/ctl:$NEWSBIN:$NEWSPATH ; export PATH
  636.   umask $NEWSUMASK
  637.   
  638.   lock LOCK $$ || exit 1
  639. --- 3,9 ----
  640.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  641.   . ${NEWSCONFIG-/etc/news/bin/config}
  642.   
  643. ! PATH=$NEWSCTL/bin:$NEWSBIN/relay:$NEWSBIN:$NEWSPATH ; export PATH
  644.   umask $NEWSUMASK
  645.   
  646.   lock LOCK $$ || exit 1
  647. ***************
  648. *** 44,50 ****
  649.       for f in `cat /tmp/delaydo$$`
  650.       do
  651.           canonhdr $f | 
  652. !             sed -n 's;^Control:[     ]*;'$NEWSBIN/ctlaux/del';p' |
  653.               egrep -v '/^(cancel|ihave|sendme) ' >/tmp/ctl$$
  654.           # It might seem as if we need to duplicate relaynews's
  655.           # security checks -- for .. or metacharacters -- but a
  656. --- 44,50 ----
  657.       for f in `cat /tmp/delaydo$$`
  658.       do
  659.           canonhdr $f | 
  660. !             sed -n 's;^Control:[     ]*;'$NEWSBIN/relay/del';p' |
  661.               egrep -v '/^(cancel|ihave|sendme) ' >/tmp/ctl$$
  662.           # It might seem as if we need to duplicate relaynews's
  663.           # security checks -- for .. or metacharacters -- but a
  664.  
  665.  
  666.  
  667. *** ctl/makefile.mastercopy    Mon Oct 17 23:09:09 1994
  668. --- ctl/makefile    Mon Oct 17 21:45:13 1994
  669. ***************
  670. *** 67,74 ****
  671.       echo "comp.lang.beta 0000000000 00001 y" >>active.good
  672.       cp active.times at.good
  673.       echo "comp.lang.beta 0 tale@uunet.uu.net (David C Lawrence)" >>at.good
  674. !     cp newsgroups newsgroups.good
  675. !     egrep '^comp.lang.beta    ' reg/n.1 >>newsgroups.good
  676.       $(HERE) ./newgroup comp.lang.beta <reg/n.1 >out.tmp 2>err.tmp
  677.       test ! -s out.tmp ;
  678.       test ! -s err.tmp ;
  679. --- 67,74 ----
  680.       echo "comp.lang.beta 0000000000 00001 y" >>active.good
  681.       cp active.times at.good
  682.       echo "comp.lang.beta 0 tale@uunet.uu.net (David C Lawrence)" >>at.good
  683. !     cp newsgroups newsgroups.ok
  684. !     egrep '^comp.lang.beta    ' reg/n.1 >>newsgroups.ok
  685.       $(HERE) ./newgroup comp.lang.beta <reg/n.1 >out.tmp 2>err.tmp
  686.       test ! -s out.tmp ;
  687.       test ! -s err.tmp ;
  688. ***************
  689. *** 75,81 ****
  690.       cmp active.good active || diff active.good active
  691.       sed 's/ [0-9][0-9]* / 0 /' active.times >at.tmp
  692.       cmp at.good at.tmp || diff at.good at.tmp
  693. !     cmp newsgroups.good newsgroups || diff newsgroups.good newsgroups
  694.       cmp reg/n.1r reports || diff reg/n.1r reports
  695.       test -d arts/comp/lang/beta ;
  696.       test -r arts/comp/lang/beta/.overview ;
  697. --- 75,81 ----
  698.       cmp active.good active || diff active.good active
  699.       sed 's/ [0-9][0-9]* / 0 /' active.times >at.tmp
  700.       cmp at.good at.tmp || diff at.good at.tmp
  701. !     cmp newsgroups.ok newsgroups || diff newsgroups.ok newsgroups
  702.       cmp reg/n.1r reports || diff reg/n.1r reports
  703.       test -d arts/comp/lang/beta ;
  704.       test -r arts/comp/lang/beta/.overview ;
  705. ***************
  706. *** 83,95 ****
  707.       : rmgroup
  708.       egrep -v soundcard active >active.good
  709.       egrep -v soundcard active.times >at.good
  710. !     egrep -v soundcard newsgroups >newsgroups.good
  711.       $(HERE) ./rmgroup comp.sys.ibm.pc.soundcard <reg/r.1 >out.tmp 2>err.tmp
  712.       test ! -s out.tmp ;
  713.       test ! -s err.tmp ;
  714.       cmp active.good active || diff active.good active
  715.       cmp at.good active.times || diff at.good active.times
  716. !     cmp newsgroups.good newsgroups || diff newsgroups.good newsgroups
  717.       cmp reg/r.1r reports || diff reg/r.1r reports
  718.       test " `cat dirs.tbd`" = " comp/sys/ibm/pc/soundcard" ;
  719.       : success
  720. --- 83,95 ----
  721.       : rmgroup
  722.       egrep -v soundcard active >active.good
  723.       egrep -v soundcard active.times >at.good
  724. !     egrep -v soundcard newsgroups >newsgroups.ok
  725.       $(HERE) ./rmgroup comp.sys.ibm.pc.soundcard <reg/r.1 >out.tmp 2>err.tmp
  726.       test ! -s out.tmp ;
  727.       test ! -s err.tmp ;
  728.       cmp active.good active || diff active.good active
  729.       cmp at.good active.times || diff at.good active.times
  730. !     cmp newsgroups.ok newsgroups || diff newsgroups.ok newsgroups
  731.       cmp reg/r.1r reports || diff reg/r.1r reports
  732.       test " `cat dirs.tbd`" = " comp/sys/ibm/pc/soundcard" ;
  733.       : success
  734. ***************
  735. *** 96,102 ****
  736.   
  737.   rclean:
  738.       rm -f controlperm active active.times newsgroups dirs.tbd reports
  739. !     rm -f *.good *.tmp namecheck.awk canonsys.awk whoami sys
  740.       rm -rf bin arts
  741.   
  742.   clean:    rclean
  743. --- 96,102 ----
  744.   
  745.   rclean:
  746.       rm -f controlperm active active.times newsgroups dirs.tbd reports
  747. !     rm -f *.good *.tmp namecheck.awk canonsys.awk whoami sys newsgroups.ok
  748.       rm -rf bin arts
  749.   
  750.   clean:    rclean
  751.  
  752.  
  753.  
  754. *** ctl/controlperm.eg.mastercopy    Mon Oct 17 23:09:09 1994
  755. --- ctl/controlperm.eg    Tue Oct 11 15:04:59 1994
  756. ***************
  757. *** 5,10 ****
  758. --- 5,15 ----
  759.   # and nobody else gets any attention in these hierarchies
  760.   comp,sci,misc,rec,soc,talk    any            nr    nq
  761.   
  762. + # same for Jim McIntosh in bit
  763. + bit                jim@american.edu    n    y
  764. + bit                jim@american.edu    r    n
  765. + bit                any            nr    nq
  766.   # it's really tempting to change this one to nq...
  767.   alt                any            nr    nv
  768.   
  769.  
  770.  
  771.  
  772. *** doc/problems.mastercopy    Mon Oct 17 23:09:10 1994
  773. --- doc/problems    Sun Oct  2 00:59:31 1994
  774. ***************
  775. *** 1092,1094 ****
  776. --- 1092,1104 ----
  777.   but it's meant only for cross-development work.
  778.   The correct answer to ``does your system have \fIranlib\fR?'' is \fIno\fR
  779.   on such systems.
  780. + .SH
  781. + GNU join
  782. + .Ix join
  783. + .Ix "GNU join"
  784. + .PP
  785. + GNU \fIjoin\fR, from shellutils 1.9, has
  786. + the \fB\-a\fR option badly botched.
  787. + This breaks \fIupact\fR; the \fIupact\fR regression test catches this.
  788. + Steve Robbins found this and posted a fix;
  789. + it's too long to reproduce here.
  790.  
  791.  
  792.  
  793. *** expire/upact.mastercopy    Mon Oct 17 23:09:11 1994
  794. --- expire/upact    Sun Oct  9 21:55:03 1994
  795. ***************
  796. *** 28,34 ****
  797.   
  798.   cd $NEWSCTL
  799.   
  800. ! # check active file format
  801.   nf=`sed 1q active | awk '{print NF}'`
  802.   if test $nf -ne 4
  803.   then
  804. --- 28,34 ----
  805.   
  806.   cd $NEWSCTL
  807.   
  808. ! # check out the active file
  809.   nf=`sed 1q active | awk '{print NF}'`
  810.   if test $nf -ne 4
  811.   then
  812. ***************
  813. *** 35,40 ****
  814. --- 35,45 ----
  815.       echo "$0: active file has other than 4 fields" >&2
  816.       exit 1
  817.   fi
  818. + if test " `awk '{print $1}' active | sort | uniq -d`" != " "
  819. + then
  820. +     echo "$0: duplicate entries in active file, unable to run" >&2
  821. +     exit 1
  822. + fi
  823.   
  824.   # Bernd Felsche of MetaPro Systems came up with this general approach,
  825.   # which minimizes the number of processes spawned, although this code is
  826. ***************
  827. *** 69,75 ****
  828.       }' | ( cd $NEWSARTS ; sh 2>$lserr ) |
  829.       awk -F' ' 'BEGIN {
  830.           OFMT = "%.12g"
  831. !         big = 999999999999
  832.           lowest = big
  833.           small = 0
  834.           highest = small
  835. --- 74,80 ----
  836.       }' | ( cd $NEWSARTS ; sh 2>$lserr ) |
  837.       awk -F' ' 'BEGIN {
  838.           OFMT = "%.12g"
  839. !         big = 99999999999
  840.           lowest = big
  841.           small = 0
  842.           highest = small
  843.  
  844.  
  845.  
  846. *** expire/explist.eg.mastercopy    Mon Oct 17 23:09:11 1994
  847. --- expire/explist.eg    Fri Sep 30 01:41:01 1994
  848. ***************
  849. *** 6,11 ****
  850. --- 6,16 ----
  851.   /expired/            x    14    -
  852.   /bounds/            x    0-1-90    -
  853.   
  854. + # keep local groups a while, with some exceptions
  855. + sirius.trivia            x    7    -
  856. + sirius.announce            x    never    -
  857. + sirius                x    30    -
  858.   # override later defaults for some groups of note
  859.   sci.space.shuttle,rec.birds    x    7    -
  860.   
  861. ***************
  862. *** 14,23 ****
  863.   
  864.   # real noise gets thrown away fast
  865.   news.groups            x    2    -
  866. ! junk,tor.news.stats        x    2    -
  867.   
  868.   # throw away some technical stuff that's particularly boring
  869. ! comp.os.vms,comp.mail.maps    x    4    -
  870.   
  871.   # This moderator is abusing expiry dates, putting them on everything instead
  872.   # of just things of lasting value.  So override him -- his stuff expires in
  873. --- 19,28 ----
  874.   
  875.   # real noise gets thrown away fast
  876.   news.groups            x    2    -
  877. ! junk,tor.news.stats        x    1.5    -
  878.   
  879.   # throw away some technical stuff that's particularly boring
  880. ! comp.os.vms            x    4    -
  881.   
  882.   # This moderator is abusing expiry dates, putting them on everything instead
  883.   # of just things of lasting value.  So override him -- his stuff expires in
  884.  
  885.  
  886.  
  887. *** expire/doexpire.mastercopy    Mon Oct 17 23:09:12 1994
  888. --- expire/doexpire    Mon Oct 17 20:28:55 1994
  889. ***************
  890. *** 9,14 ****
  891. --- 9,15 ----
  892.   
  893.   dor='?'
  894.   opts=
  895. + aux=yes
  896.   histdir=$NEWSCTL
  897.   for dummy
  898.   do
  899. ***************
  900. *** 15,20 ****
  901. --- 16,22 ----
  902.       case "$1" in
  903.       -r)    dor=yes ; opts="$opts -r"    ;;
  904.       -f)    dor=no                ;;
  905. +     -e)    aux=no                ;;
  906.       --)                    ;;
  907.       -a)    opts="$opts $1 $2" ; shift    ;;
  908.       -H)    opts="$opts $1 $2"
  909. ***************
  910. *** 22,31 ****
  911.           shift
  912.           ;;
  913.       -*)    opts="$opts $1"            ;;
  914. !     *)    echo "$0: unknown argument \`$1'" >&2 ; exit 2    ;;
  915.       esac
  916.       shift
  917.   done
  918.   
  919.   lock -o LOCKexpire $$ || {
  920.       echo "$0: doexpire apparently already running, won't start another" |
  921. --- 24,37 ----
  922.           shift
  923.           ;;
  924.       -*)    opts="$opts $1"            ;;
  925. !     *)    break                ;;
  926.       esac
  927.       shift
  928.   done
  929. + case $# in
  930. + 0)    ;;
  931. + *)    echo "$0: unknown arguments \`$*'" >&2 ; exit 2    ;;
  932. + esac
  933.   
  934.   lock -o LOCKexpire $$ || {
  935.       echo "$0: doexpire apparently already running, won't start another" |
  936. ***************
  937. *** 78,89 ****
  938.       fi
  939.       ;;
  940.   esac
  941.   
  942.   expire $opts $NEWSCTL/explist 2>/tmp/doex$$
  943.   
  944.   # don't run auxiliaries if this is a panic expire
  945. ! case "$dor" in
  946. ! yes)    ;;
  947.   *)    upact 2>>/tmp/doex$$
  948.       expov 2>>/tmp/doex$$
  949.       ;;
  950. --- 84,98 ----
  951.       fi
  952.       ;;
  953.   esac
  954. + case "$dor" in
  955. + yes)    aux=no    ;;
  956. + esac
  957.   
  958.   expire $opts $NEWSCTL/explist 2>/tmp/doex$$
  959.   
  960.   # don't run auxiliaries if this is a panic expire
  961. ! case "$aux" in
  962. ! no)    ;;
  963.   *)    upact 2>>/tmp/doex$$
  964.       expov 2>>/tmp/doex$$
  965.       ;;
  966.  
  967.  
  968.  
  969. *** include/sys/timeb.fake.mastercopy    Mon Oct 17 23:09:12 1994
  970. --- include/sys/timeb.fake    Fri Sep 30 13:39:08 1994
  971. ***************
  972. *** 4,7 ****
  973. --- 4,10 ----
  974.       short timezone;
  975.       short dstflag;
  976.   };
  977. + #ifdef ftime
  978. + #undef ftime
  979. + #endif
  980.   #define    ftime(x)    fakeftime(x)
  981.  
  982.  
  983.  
  984. *** include/libc.h.mastercopy    Mon Oct 17 23:09:13 1994
  985. --- include/libc.h    Sat Oct  1 00:27:10 1994
  986. ***************
  987. *** 2,45 ****
  988.   #define LIBC_H
  989.   /*
  990.    * declarations of (supposedly) standard C library functions and types.
  991. -  * we don't declare functions that once returned int but may now return void
  992. -  * to avoid fatal but spurious compilation errors.  VOID is an attempt to deal
  993. -  * with this transition.
  994. -  *
  995. -  * The function declarations need to be prototyped to give ansi compilers
  996. -  * less gastric distress.
  997.    */
  998.   
  999. - #ifndef VOID
  1000. - #define VOID void
  1001. - #endif
  1002. - /* Unix system calls */
  1003. - #ifdef __STDC__
  1004. - extern int execv(char *, char **), execl(char *, char *, ...);
  1005. - extern int execve(char *, char **, char **), execle(char *, char *, ...);
  1006. - #endif
  1007.   extern time_t time();            /* sys/timeb.h? time.h sez POSIX */
  1008.   
  1009. - extern char **environ;
  1010. - #ifdef A_STABLE_WORLD
  1011. - extern VOID rewind();            /* stdio.h */
  1012. - extern VOID exit();            /* stdio.h */
  1013. - #endif                    /* A_STABLE_WORLD */
  1014.   extern FILE *popen();            /* stdio.h */
  1015. - /* stdio.h is supposed to declare *printf */
  1016.   
  1017.   /* these unfortunately cannot be relied upon to be in the right header */
  1018.   extern struct passwd *getpwnam();    /* pwd.h */
  1019. - extern struct group *getgrnam();    /* grp.h */
  1020.   extern char *ctime();            /* time.h */
  1021.   
  1022. ! extern long atol();
  1023. ! extern char *mktemp(), *getenv();
  1024.   
  1025.   extern int optind;
  1026.   extern char *optarg;
  1027.   
  1028. ! #include "alloc.h"            /* ugh */
  1029.   #endif                    /* LIBC_H */
  1030. --- 2,22 ----
  1031.   #define LIBC_H
  1032.   /*
  1033.    * declarations of (supposedly) standard C library functions and types.
  1034.    */
  1035.   
  1036.   extern time_t time();            /* sys/timeb.h? time.h sez POSIX */
  1037.   
  1038.   extern FILE *popen();            /* stdio.h */
  1039.   
  1040.   /* these unfortunately cannot be relied upon to be in the right header */
  1041.   extern struct passwd *getpwnam();    /* pwd.h */
  1042.   extern char *ctime();            /* time.h */
  1043.   
  1044. ! extern char *mktemp();
  1045.   
  1046.   extern int optind;
  1047.   extern char *optarg;
  1048.   
  1049. ! #include "alloc.h"
  1050. ! #include <stdlib.h>
  1051.   #endif                    /* LIBC_H */
  1052.  
  1053.  
  1054.  
  1055. *** input/newsrun.mastercopy    Mon Oct 17 23:09:13 1994
  1056. --- input/newsrun    Tue Oct  4 16:22:26 1994
  1057. ***************
  1058. *** 122,132 ****
  1059.           fi
  1060.   
  1061.           # Decompress if necessary.
  1062. -         text=${f}.t
  1063.           case $f in
  1064. !         *.Z)    uncompress <$f >$text    ;;
  1065.           *.t)    text=$f ; : okay    ;;
  1066. !         *)    uncompress <$f >$text 2>/dev/null ||
  1067.                   { rm -f $text ; text=$f ; : okay ; }    ;;
  1068.           esac || ln $f bad/$f
  1069.           if test " $f" != " $text"
  1070. --- 122,134 ----
  1071.           fi
  1072.   
  1073.           # Decompress if necessary.
  1074.           case $f in
  1075. !         *.Z)    text=`echo $f | sed 's/Z\$/t/'`
  1076. !             uncompress <$f >$text
  1077. !             ;;
  1078.           *.t)    text=$f ; : okay    ;;
  1079. !         *)    text=${f}.t
  1080. !             uncompress <$f >$text 2>/dev/null ||
  1081.                   { rm -f $text ; text=$f ; : okay ; }    ;;
  1082.           esac || ln $f bad/$f
  1083.           if test " $f" != " $text"
  1084.  
  1085.  
  1086.  
  1087. *** input/makefile.mastercopy    Mon Oct 17 23:09:14 1994
  1088. --- input/makefile    Mon Oct 10 23:37:21 1994
  1089. ***************
  1090. *** 119,125 ****
  1091.       mkdir decompressors
  1092.       echo 'sed 1d $$*' >decompressors/dejunk
  1093.       $(MX) bin/* decompressors/*
  1094. !     mkdir arts arts/in.coming        # but not bad, yet
  1095.   
  1096.   AIN=arts/in.coming
  1097.   
  1098. --- 119,125 ----
  1099.       mkdir decompressors
  1100.       echo 'sed 1d $$*' >decompressors/dejunk
  1101.       $(MX) bin/* decompressors/*
  1102. !     mkdir arts arts/in.coming ;        # but not bad, yet
  1103.   
  1104.   AIN=arts/in.coming
  1105.   
  1106. ***************
  1107. *** 127,133 ****
  1108.       $(HERE) ./rnews <test.1
  1109.       cmp $(AIN)/* test.1
  1110.       expr $(AIN)/* : '.*\.t' >junk
  1111. !     sleep 2            # must delay for sake of "ls -t"!
  1112.       $(HERE) ./rnews <test.2
  1113.       $(HERE) ./rnews <test.n1
  1114.       $(HERE) ./rnews <test.n2
  1115. --- 127,133 ----
  1116.       $(HERE) ./rnews <test.1
  1117.       cmp $(AIN)/* test.1
  1118.       expr $(AIN)/* : '.*\.t' >junk
  1119. !     sleep 2 ;        # must delay for sake of "ls -t"!
  1120.       $(HERE) ./rnews <test.2
  1121.       $(HERE) ./rnews <test.n1
  1122.       $(HERE) ./rnews <test.n2
  1123.  
  1124.  
  1125.  
  1126. *** libcnews/fakeftime.c.mastercopy    Mon Oct 17 23:09:14 1994
  1127. --- libcnews/fakeftime.c    Fri Sep 30 13:38:42 1994
  1128. ***************
  1129. *** 3,11 ****
  1130.    */
  1131.   
  1132.   #include <sys/types.h>
  1133. - #include <sys/timeb.h>
  1134.   #include <sys/time.h>
  1135.   #include <time.h>
  1136.   #include <stdlib.h>
  1137.   
  1138.   #define    DUNNO    1000000L    /* impossible seconds timezone offset */
  1139. --- 3,11 ----
  1140.    */
  1141.   
  1142.   #include <sys/types.h>
  1143.   #include <sys/time.h>
  1144.   #include <time.h>
  1145. + #include <sys/timeb.h>
  1146.   #include <stdlib.h>
  1147.   
  1148.   #define    DUNNO    1000000L    /* impossible seconds timezone offset */
  1149.  
  1150.  
  1151.  
  1152. *** libdbz/dbzmain.c.mastercopy    Mon Oct 17 23:09:15 1994
  1153. --- libdbz/dbzmain.c    Fri Sep 30 13:15:21 1994
  1154. ***************
  1155. *** 316,322 ****
  1156.   FILE *in;
  1157.   char *name;
  1158.   {
  1159. !     register off_t place;
  1160.   
  1161.       inname = name;
  1162.       lineno = 0;
  1163. --- 316,322 ----
  1164.   FILE *in;
  1165.   char *name;
  1166.   {
  1167. !     register long place;
  1168.   
  1169.       inname = name;
  1170.       lineno = 0;
  1171. ***************
  1172. *** 342,353 ****
  1173.   void
  1174.   doline(lp, inoffset)
  1175.   char *lp;
  1176. ! off_t inoffset;
  1177.   {
  1178.       register char *p;
  1179.       register char pc;
  1180.       datum key, value;
  1181. !     off_t place = inoffset;
  1182.       register int shouldfind;
  1183.       register int llen;
  1184.       char keytext[DBZMAXKEY+1];
  1185. --- 342,353 ----
  1186.   void
  1187.   doline(lp, inoffset)
  1188.   char *lp;
  1189. ! long inoffset;
  1190.   {
  1191.       register char *p;
  1192.       register char pc;
  1193.       datum key, value;
  1194. !     long place = inoffset;
  1195.       register int shouldfind;
  1196.       register int llen;
  1197.       char keytext[DBZMAXKEY+1];
  1198. ***************
  1199. *** 384,390 ****
  1200.                   fail("`%s' already present", lp);
  1201.           }
  1202.           value.dptr = (char *)&place;
  1203. !         value.dsize = (int)sizeof(off_t);
  1204.           if (((dbzint) ? dbzstore(key, value) : store(key, value)) < 0)
  1205.               fail("store failed on `%s'", lp);
  1206.           break;
  1207. --- 384,390 ----
  1208.                   fail("`%s' already present", lp);
  1209.           }
  1210.           value.dptr = (char *)&place;
  1211. !         value.dsize = (int)sizeof(place);
  1212.           if (((dbzint) ? dbzstore(key, value) : store(key, value)) < 0)
  1213.               fail("store failed on `%s'", lp);
  1214.           break;
  1215. ***************
  1216. *** 394,403 ****
  1217.           if (!shouldfind && (value.dptr != NULL || value.dsize != 0))
  1218.               fail("`%s' found, shouldn't be", lp);
  1219.           if (shouldfind && (value.dptr == NULL ||
  1220. !                     value.dsize != sizeof(off_t)))
  1221.               fail("can't find `%s'", lp);
  1222.           if (shouldfind && !quick) {
  1223. !             (void) memcpy((char *)&place, value.dptr, sizeof(off_t));
  1224.               if (place != inoffset)
  1225.                   fail("offset mismatch on `%s'", lp);
  1226.               if (fseek(base, place, SEEK_SET) != 0)
  1227. --- 394,403 ----
  1228.           if (!shouldfind && (value.dptr != NULL || value.dsize != 0))
  1229.               fail("`%s' found, shouldn't be", lp);
  1230.           if (shouldfind && (value.dptr == NULL ||
  1231. !                     value.dsize != sizeof(place)))
  1232.               fail("can't find `%s'", lp);
  1233.           if (shouldfind && !quick) {
  1234. !             (void) memcpy((char *)&place, value.dptr, sizeof(place));
  1235.               if (place != inoffset)
  1236.                   fail("offset mismatch on `%s'", lp);
  1237.               if (fseek(base, place, SEEK_SET) != 0)
  1238. ***************
  1239. *** 411,417 ****
  1240.       case 'x':
  1241.           value = (dbzint) ? dbzfetch(key) : fetch(key);
  1242.           if (value.dptr != NULL && !quick) {
  1243. !             (void) memcpy((char *)&place, value.dptr, sizeof(off_t));
  1244.               if (fseek(base, place, SEEK_SET) != 0)
  1245.                   fail("fseek failed on `%s'", lp);
  1246.               if (fgets(cmp, buflen, base) == NULL)
  1247. --- 411,417 ----
  1248.       case 'x':
  1249.           value = (dbzint) ? dbzfetch(key) : fetch(key);
  1250.           if (value.dptr != NULL && !quick) {
  1251. !             (void) memcpy((char *)&place, value.dptr, sizeof(place));
  1252.               if (fseek(base, place, SEEK_SET) != 0)
  1253.                   fail("fseek failed on `%s'", lp);
  1254.               if (fgets(cmp, buflen, base) == NULL)
  1255. ***************
  1256. *** 441,447 ****
  1257.   char *file;
  1258.   {
  1259.       register FILE *fd;
  1260. !     off_t it;
  1261.       register long run;
  1262.   
  1263.       fd = fopen(file, "r");
  1264. --- 441,447 ----
  1265.   char *file;
  1266.   {
  1267.       register FILE *fd;
  1268. !     long it;
  1269.       register long run;
  1270.   
  1271.       fd = fopen(file, "r");
  1272. ***************
  1273. *** 448,454 ****
  1274.       if (fd == NULL)
  1275.           fail("cannot reopen `%s'", file);
  1276.       run = 0;
  1277. !     while (fread((char *)&it, sizeof(off_t), 1, fd) == 1) {
  1278.           if (it != 0)
  1279.               run++;
  1280.           else if (run > 0) {
  1281. --- 448,454 ----
  1282.       if (fd == NULL)
  1283.           fail("cannot reopen `%s'", file);
  1284.       run = 0;
  1285. !     while (fread((char *)&it, sizeof(it), 1, fd) == 1) {
  1286.           if (it != 0)
  1287.               run++;
  1288.           else if (run > 0) {
  1289. ***************
  1290. *** 468,474 ****
  1291.   char *pn;
  1292.   {
  1293.       register FILE *pf;
  1294. !     off_t it;
  1295.       char nl;
  1296.       register FILE *hf;
  1297.   
  1298. --- 468,474 ----
  1299.   char *pn;
  1300.   {
  1301.       register FILE *pf;
  1302. !     long it;
  1303.       char nl;
  1304.       register FILE *hf;
  1305.   
  1306. ***************
  1307. *** 478,485 ****
  1308.       pf = fopen(pn, "r");
  1309.       if (pf == NULL)
  1310.           fail("cannot reopen `%s'", pn);
  1311. !     while (fread((char *)&it, sizeof(off_t), 1, pf) == 1) {
  1312. !         it = (it & ((off_t)0x80000000)) ? (it&~((off_t)0xff000000)) : it;
  1313.           if (it != 0 && it != 1) {    /* 0 empty, 1 known okay */
  1314.               it--;        /* get rid of bias */
  1315.               (void) fseek(hf, it-1, SEEK_SET);
  1316. --- 478,485 ----
  1317.       pf = fopen(pn, "r");
  1318.       if (pf == NULL)
  1319.           fail("cannot reopen `%s'", pn);
  1320. !     while (fread((char *)&it, sizeof(it), 1, pf) == 1) {
  1321. !         it = (it & 0x80000000) ? (it&~0xf8000000) : it;
  1322.           if (it != 0 && it != 1) {    /* 0 empty, 1 known okay */
  1323.               it--;        /* get rid of bias */
  1324.               (void) fseek(hf, it-1, SEEK_SET);
  1325.  
  1326.  
  1327.  
  1328. *** maint/makefile.mastercopy    Mon Oct 17 23:09:16 1994
  1329. --- maint/makefile    Mon Oct 10 23:37:54 1994
  1330. ***************
  1331. *** 54,83 ****
  1332.       mkdir arts arts/foo arts/bar arts/bar/ugh arts/urp
  1333.       mkdir arts/bletch arts/lost+found
  1334.       echo nevermore >arts/lost+found/1
  1335. !     echo '<okay1>    9999~-    foo/1' >history.good
  1336.       echo 'MeSsAge-ID: <okay1>' >arts/foo/1
  1337. !     echo '<okay2>    9999~-    bar.ugh/7' >>history.good
  1338.       echo 'Message-ID: <okay2>' >arts/bar/ugh/7
  1339. !     echo '<cross2>    9999~-    bar.ugh/8 foo/2' >>history.good
  1340.       echo 'Message-ID: <cross2>' >arts/foo/2
  1341.       ln arts/foo/2 arts/bar/ugh/8
  1342. !     echo '<cross4>    9999~-    bar.ugh/9 bar/13 foo/3 urp/2' >>history.good
  1343.       echo 'Message-ID: <cross4>' >arts/foo/3
  1344.       ln arts/foo/3 arts/bar/ugh/9
  1345.       ln arts/foo/3 arts/bar/13
  1346.       ln arts/foo/3 arts/urp/2
  1347. !     echo '<link2>    9999~tomorrow    bar.ugh/10 foo/4' >>history.good
  1348.       echo 'Message-ID: <link2>' >arts/foo/4
  1349.       echo 'Expires: tomorrow' >>arts/foo/4
  1350.       ln arts/foo/4 arts/bar/ugh/10
  1351. !     echo '<bar.ugh/11@trash>    0~0    bar.ugh/11' >>history.good
  1352.       echo >arts/bar/ugh/11
  1353. !     echo '<bar.ugh/12@trash>    0~0    bar.ugh/12' >>history.good
  1354.       echo 'Expires: not~today' >arts/bar/ugh/12
  1355.       echo 'Message-ID: <legal>' >>arts/bar/ugh/12
  1356. !     echo '<bar.ugh/13@trash>    0~0    bar.ugh/13' >>history.good
  1357.       echo 'Message-ID: illegal' >arts/bar/ugh/13
  1358. !     sed $(FIXMIDFIELD) history.good | sort -o history.good
  1359.   
  1360.   r:    $(PROGS) rclean rsetup
  1361.       : "mkhistory"
  1362. --- 54,83 ----
  1363.       mkdir arts arts/foo arts/bar arts/bar/ugh arts/urp
  1364.       mkdir arts/bletch arts/lost+found
  1365.       echo nevermore >arts/lost+found/1
  1366. !     echo '<okay1>    9999~-    foo/1' >history.gbase
  1367.       echo 'MeSsAge-ID: <okay1>' >arts/foo/1
  1368. !     echo '<okay2>    9999~-    bar.ugh/7' >>history.gbase
  1369.       echo 'Message-ID: <okay2>' >arts/bar/ugh/7
  1370. !     echo '<cross2>    9999~-    bar.ugh/8 foo/2' >>history.gbase
  1371.       echo 'Message-ID: <cross2>' >arts/foo/2
  1372.       ln arts/foo/2 arts/bar/ugh/8
  1373. !     echo '<cross4>    9999~-    bar.ugh/9 bar/13 foo/3 urp/2' >>history.gbase
  1374.       echo 'Message-ID: <cross4>' >arts/foo/3
  1375.       ln arts/foo/3 arts/bar/ugh/9
  1376.       ln arts/foo/3 arts/bar/13
  1377.       ln arts/foo/3 arts/urp/2
  1378. !     echo '<link2>    9999~tomorrow    bar.ugh/10 foo/4' >>history.gbase
  1379.       echo 'Message-ID: <link2>' >arts/foo/4
  1380.       echo 'Expires: tomorrow' >>arts/foo/4
  1381.       ln arts/foo/4 arts/bar/ugh/10
  1382. !     echo '<bar.ugh/11@trash>    0~0    bar.ugh/11' >>history.gbase
  1383.       echo >arts/bar/ugh/11
  1384. !     echo '<bar.ugh/12@trash>    0~0    bar.ugh/12' >>history.gbase
  1385.       echo 'Expires: not~today' >arts/bar/ugh/12
  1386.       echo 'Message-ID: <legal>' >>arts/bar/ugh/12
  1387. !     echo '<bar.ugh/13@trash>    0~0    bar.ugh/13' >>history.gbase
  1388.       echo 'Message-ID: illegal' >arts/bar/ugh/13
  1389. !     sed $(FIXMIDFIELD) history.gbase | sort >history.good
  1390.   
  1391.   r:    $(PROGS) rclean rsetup
  1392.       : "mkhistory"
  1393. ***************
  1394. *** 91,100 ****
  1395.       test -r history.pag ;
  1396.       test -r history.dir ;
  1397.       : "addmissing"
  1398. !     echo '<missing>    9999~-    bar.ugh/14' >>history.good
  1399.       echo 'Message-ID: <missing>' >arts/bar/ugh/14
  1400. !     sed $(FIXMIDFIELD) history.good | sort -o history.good
  1401. !     sleep 2        # ensure article looks older than addmissing startup
  1402.       $(HERE) ./addmissing -v >addm.out 2>addm.diag
  1403.       sed $(FIXMIDFIELD) history | sort >history.fixed
  1404.       cmp history.good history.fixed || diff history.good history.fixed
  1405. --- 91,100 ----
  1406.       test -r history.pag ;
  1407.       test -r history.dir ;
  1408.       : "addmissing"
  1409. !     echo '<missing>    9999~-    bar.ugh/14' >>history.gbase
  1410.       echo 'Message-ID: <missing>' >arts/bar/ugh/14
  1411. !     sed $(FIXMIDFIELD) history.gbase | sort >history.good
  1412. !     sleep 2 ;    # ensure article looks older than addmissing startup
  1413.       $(HERE) ./addmissing -v >addm.out 2>addm.diag
  1414.       sed $(FIXMIDFIELD) history | sort >history.fixed
  1415.       cmp history.good history.fixed || diff history.good history.fixed
  1416. ***************
  1417. *** 104,113 ****
  1418.       cmp addm.good addm.fixed || diff addm.good addm.fixed
  1419.       test ! -s addm.diag ;
  1420.       : "cnewsdo, using addmissing as test command"
  1421. !     echo '<missing2>    9999~-    bar.ugh/15' >>history.good
  1422.       echo 'Message-ID: <missing2>' >arts/bar/ugh/15
  1423. !     sed $(FIXMIDFIELD) history.good | sort -o history.good
  1424. !     sleep 2        # ensure article looks older than addmissing startup
  1425.       touch active
  1426.       $(HERE) ./cnewsdo addmissing >addm.out 2>addm.diag
  1427.       sed $(FIXMIDFIELD) history | sort >history.fixed
  1428. --- 104,113 ----
  1429.       cmp addm.good addm.fixed || diff addm.good addm.fixed
  1430.       test ! -s addm.diag ;
  1431.       : "cnewsdo, using addmissing as test command"
  1432. !     echo '<missing2>    9999~-    bar.ugh/15' >>history.gbase
  1433.       echo 'Message-ID: <missing2>' >arts/bar/ugh/15
  1434. !     sed $(FIXMIDFIELD) history.gbase | sort >history.good
  1435. !     sleep 2 ;    # ensure article looks older than addmissing startup
  1436.       touch active
  1437.       $(HERE) ./cnewsdo addmissing >addm.out 2>addm.diag
  1438.       sed $(FIXMIDFIELD) history | sort >history.fixed
  1439.  
  1440.  
  1441.  
  1442. *** maint/newsdaily.mastercopy    Mon Oct 17 23:09:16 1994
  1443. --- maint/newsdaily    Fri Sep 30 13:43:48 1994
  1444. ***************
  1445. *** 16,22 ****
  1446.   cd $NEWSCTL
  1447.   
  1448.   # keep one generation of log -- it's big
  1449. ! rm -f log.o
  1450.   mv log log.o
  1451.   touch log
  1452.   # log.o gets compressed below
  1453. --- 16,22 ----
  1454.   cd $NEWSCTL
  1455.   
  1456.   # keep one generation of log -- it's big
  1457. ! rm -f log.o log.o.Z
  1458.   mv log log.o
  1459.   touch log
  1460.   # log.o gets compressed below
  1461.  
  1462.  
  1463.  
  1464. *** maint/addmissing.mastercopy    Mon Oct 17 23:09:17 1994
  1465. --- maint/addmissing    Wed Oct  5 13:55:30 1994
  1466. ***************
  1467. *** 37,43 ****
  1468.   >/tmp/time$$
  1469.   
  1470.   # put together a list of known filenames from history
  1471. ! egrep '    .*    ' history | sed 's/.*    //' | tr '. ' '/
  1472.   ' | egrep '/' | sort -u $SORTTMP >/tmp/hist$$
  1473.   
  1474.   # release the main lock, temporarily
  1475. --- 37,43 ----
  1476.   >/tmp/time$$
  1477.   
  1478.   # put together a list of known filenames from history
  1479. ! egrep '    .*    ' $NEWSCTL/history | sed 's/.*    //' | tr '. ' '/
  1480.   ' | egrep '/' | sort -u $SORTTMP >/tmp/hist$$
  1481.   
  1482.   # release the main lock, temporarily
  1483.  
  1484.  
  1485.  
  1486. *** maint/locknews.mastercopy    Mon Oct 17 23:09:17 1994
  1487. --- maint/locknews    Tue Oct  4 18:23:39 1994
  1488. ***************
  1489. *** 3,9 ****
  1490.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  1491.   . ${NEWSCONFIG-/etc/news/bin/config}
  1492.   
  1493. ! PATH=$NEWSCTL/bin:$NEWSBIN:$NEWSPATH    # don't export it
  1494.   umask $NEWSUMASK
  1495.   
  1496.   cd $NEWSCTL
  1497. --- 3,13 ----
  1498.   # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  1499.   . ${NEWSCONFIG-/etc/news/bin/config}
  1500.   
  1501. ! oldpath="${PATH-$NEWSPATH}"
  1502. ! newpath=$NEWSCTL/bin:$NEWSBIN:$NEWSPATH
  1503. ! PATH=$newpath
  1504. ! export PATH
  1505.   umask $NEWSUMASK
  1506.   
  1507.   cd $NEWSCTL
  1508. ***************
  1509. *** 11,20 ****
  1510.   if lock -v LOCK $$ 10            # try frequently
  1511.   then
  1512.       NEWSHELD="$NEWSHELD LOCK"
  1513. !     PS1="newslocked$PS1"
  1514.       export NEWSHELD PS1
  1515.       echo 'news system locked by you'
  1516.       ${SHELL-/bin/sh}
  1517.       unlock LOCK
  1518.       echo 'news system unlocked now'
  1519.       exit 0
  1520. --- 15,26 ----
  1521.   if lock -v LOCK $$ 10            # try frequently
  1522.   then
  1523.       NEWSHELD="$NEWSHELD LOCK"
  1524. !     PS1="newslocked${PS1-> }"
  1525.       export NEWSHELD PS1
  1526.       echo 'news system locked by you'
  1527. +     PATH="$oldpath"
  1528.       ${SHELL-/bin/sh}
  1529. +     PATH="$newpath"
  1530.       unlock LOCK
  1531.       echo 'news system unlocked now'
  1532.       exit 0
  1533.  
  1534.  
  1535.  
  1536. *** makefile.mastercopy    Mon Oct 17 23:09:18 1994
  1537. --- makefile    Mon Oct 17 22:02:08 1994
  1538. ***************
  1539. *** 16,22 ****
  1540.   # System V bug fix
  1541.   SHELL=/bin/sh
  1542.   
  1543. ! build:    msub sub mx libcnews.a pgms
  1544.       : everything built successfully
  1545.   
  1546.   lib:    libcnews.a
  1547. --- 16,22 ----
  1548.   # System V bug fix
  1549.   SHELL=/bin/sh
  1550.   
  1551. ! all:    msub sub mx libcnews.a pgms
  1552.       : everything built successfully
  1553.   
  1554.   lib:    libcnews.a
  1555. ***************
  1556. *** 126,128 ****
  1557. --- 126,132 ----
  1558.   
  1559.   sterile:    spotless
  1560.       rm -f conf/quiz.def
  1561. + # this is strictly for development use
  1562. + .DEFAULT:
  1563. +     $(MAKE) -f mfile $@
  1564.  
  1565.  
  1566.  
  1567. *** man/expire.8cn.mastercopy    Mon Oct 17 23:09:19 1994
  1568. --- man/expire.8cn    Mon Oct  3 13:08:56 1994
  1569. ***************
  1570. *** 4,10 ****
  1571.   .ds b /usr/libexec/news
  1572.   .\" =()<.ds c @<NEWSCTL>@>()=
  1573.   .ds c /etc/news
  1574. ! .TH EXPIRE 8CN "15 Sept 1994"
  1575.   .BY "C News"
  1576.   .SH NAME
  1577.   expire, doexpire, expireiflow \- expire old news
  1578. --- 4,10 ----
  1579.   .ds b /usr/libexec/news
  1580.   .\" =()<.ds c @<NEWSCTL>@>()=
  1581.   .ds c /etc/news
  1582. ! .TH EXPIRE 8CN "3 Oct 1994"
  1583.   .BY "C News"
  1584.   .SH NAME
  1585.   expire, doexpire, expireiflow \- expire old news
  1586. ***************
  1587. *** 51,56 ****
  1588. --- 51,58 ----
  1589.   [ expireoptions ]
  1590.   [
  1591.   .B \-f
  1592. + ] [
  1593. + .B \-e
  1594.   ]
  1595.   .br
  1596.   .B \*b/expire/expireiflow
  1597. ***************
  1598. *** 281,286 ****
  1599. --- 283,298 ----
  1600.   and invokes \fIexpire\fR with the \fB\-r\fR option anyway.
  1601.   \fB\-f\fR suppresses this, forcing \fIexpire\fR to be run \fIwithout\fR
  1602.   \fB\-r\fR regardless of the space situation.
  1603. + \fB\-e\fR suppresses running of
  1604. + .I upact
  1605. + and
  1606. + .IR expov ,
  1607. + restricting
  1608. + .I doexpire
  1609. + to running
  1610. + .I expire
  1611. + only.
  1612. + \fB\-r\fR implies \fB\-e\fR.
  1613.   .PP
  1614.   .I Expireiflow
  1615.   checks whether there are at least \fIminimum\fR megabytes available for
  1616.  
  1617.  
  1618.  
  1619. *** man/newsbatch.8cn.mastercopy    Mon Oct 17 23:09:21 1994
  1620. --- man/newsbatch.8cn    Mon Oct  3 12:41:31 1994
  1621. ***************
  1622. *** 4,10 ****
  1623.   .ds b /usr/libexec/news
  1624.   .\" =()<.ds c @<NEWSCTL>@>()=
  1625.   .ds c /etc/news
  1626. ! .TH NEWSBATCH 8 "22 Sept 1994"
  1627.   .BY "C News"
  1628.   .SH NAME
  1629.   sendbatches, batchsplit \- news batching to other sites
  1630. --- 4,10 ----
  1631.   .ds b /usr/libexec/news
  1632.   .\" =()<.ds c @<NEWSCTL>@>()=
  1633.   .ds c /etc/news
  1634. ! .TH NEWSBATCH 8 "3 Oct 1994"
  1635.   .BY "C News"
  1636.   .SH NAME
  1637.   sendbatches, batchsplit \- news batching to other sites
  1638. ***************
  1639. *** 159,165 ****
  1640.   only for sites of the specified
  1641.   .IR class .
  1642.   A class is a single letter, by convention `u' for UUCP feeds
  1643. ! and `n' for NNTP feeds.
  1644.   .PP
  1645.   The third field is the size of batches to be prepared (before compression),
  1646.   in bytes.
  1647. --- 159,166 ----
  1648.   only for sites of the specified
  1649.   .IR class .
  1650.   A class is a single letter, by convention `u' for UUCP feeds
  1651. ! and `n' for NNTP feeds;
  1652. ! user-defined classes should be uppercase letters.
  1653.   .PP
  1654.   The third field is the size of batches to be prepared (before compression),
  1655.   in bytes.
  1656.  
  1657.  
  1658.  
  1659. *** nov/mkov.c.mastercopy    Mon Oct 17 23:09:22 1994
  1660. --- nov/mkov.c    Mon Oct  3 13:48:28 1994
  1661. ***************
  1662. *** 305,311 ****
  1663.       putfld(hdrp->h_bytes);
  1664.       putfld(hdrp->h_lines);
  1665.       /* put Xref in only if there is more than one locator in it */
  1666. !     p = strchr(hdrp->h_xref, ' ');    /* p -> space after relayer */
  1667.       if (p != NULL)
  1668.           p = strchr(p, ':');    /* p -> colon in first location */
  1669.       if (p != NULL)
  1670. --- 305,314 ----
  1671.       putfld(hdrp->h_bytes);
  1672.       putfld(hdrp->h_lines);
  1673.       /* put Xref in only if there is more than one locator in it */
  1674. !     if (hdrp->h_xref != NULL)
  1675. !         p = strchr(hdrp->h_xref, ' ');    /* p -> space after relayer */
  1676. !     else
  1677. !         p = NULL;
  1678.       if (p != NULL)
  1679.           p = strchr(p, ':');    /* p -> colon in first location */
  1680.       if (p != NULL)
  1681.  
  1682.  
  1683.  
  1684. *** nov/expovguts.c.mastercopy    Mon Oct 17 23:09:22 1994
  1685. --- nov/expovguts.c    Thu Oct  6 18:10:03 1994
  1686. ***************
  1687. *** 104,109 ****
  1688. --- 104,110 ----
  1689.       register char *line;
  1690.       register char *p;
  1691.       register long fno;
  1692. +     register int nbad = 0;
  1693.   
  1694.       while ((line = fgetline(f, (size_t *)NULL)) != NULL) {
  1695.           fno = 0;
  1696. ***************
  1697. *** 116,124 ****
  1698.                   map[fno - start] = 1;
  1699.                   if (debug)
  1700.                       printf("setting %ld\n", fno-start);
  1701. !             }
  1702. !             /* otherwise, well, simplest to just ignore it */
  1703.           }
  1704.       }
  1705.   }
  1706.   
  1707. --- 117,132 ----
  1708.                   map[fno - start] = 1;
  1709.                   if (debug)
  1710.                       printf("setting %ld\n", fno-start);
  1711. !             } else if (fno < start)
  1712. !                 nbad++;
  1713. !             /* fno >= stop presumably will be filed later */
  1714.           }
  1715. +     }
  1716. +     if (nbad > 0) {
  1717. +         fprintf(stderr, "%s: in expiring `%s',\n", progname, inname);
  1718. +         fprintf(stderr, "\tfound %d files with numbers < min (%ld)\n",
  1719. +                                 nbad, start);
  1720.       }
  1721.   }
  1722.   
  1723.  
  1724.  
  1725.  
  1726. *** nov/expov.mastercopy    Mon Oct 17 23:09:23 1994
  1727. --- nov/expov    Fri Oct 14 11:17:06 1994
  1728. ***************
  1729. *** 30,36 ****
  1730.           then
  1731.               if test ! -d $o
  1732.               then
  1733. !                 echo "$0: directory \`$o' does not exist" >&2
  1734.                   continue
  1735.               fi
  1736.               touch $o/.overview
  1737. --- 30,39 ----
  1738.           then
  1739.               if test ! -d $o
  1740.               then
  1741. !                 case "$rest" in
  1742. !                 x*|=*)    ;;    # not worth complaining
  1743. !                 *)    echo "$0: directory \`$o' does not exist" >&2 ;;
  1744. !                 esac
  1745.                   continue
  1746.               fi
  1747.               touch $o/.overview
  1748. ***************
  1749. *** 52,54 ****
  1750. --- 55,59 ----
  1751.               rm -f $o/.sov
  1752.           fi
  1753.       done
  1754. + # and the trap handles cleanup
  1755.  
  1756.  
  1757.  
  1758. *** relay/hdrdefs.c.mastercopy    Mon Oct 17 23:09:23 1994
  1759. --- relay/hdrdefs.c    Sun Oct  9 23:15:18 1994
  1760. ***************
  1761. *** 69,83 ****
  1762.   
  1763.   /* these are parsed into a struct headers */
  1764.   
  1765. ! hdrlist reqdhdrs = {
  1766. !     &msghdr,
  1767. !     &ngshdr,
  1768. !     &pathhdr,        /* modified by hdrmunge.c (emithdr()) */
  1769. !     &subjhdr,
  1770. !     &datehdr,
  1771. !     &fromhdr,
  1772. !     NULL
  1773. ! };
  1774.   hdrlist opthdrs = {
  1775.       &arthdr,        /* obsolete */
  1776.       &apphdr,
  1777. --- 69,75 ----
  1778.   
  1779.   /* these are parsed into a struct headers */
  1780.   
  1781. ! /* putting opthdrs first makes some broken compilers happier */
  1782.   hdrlist opthdrs = {
  1783.       &arthdr,        /* obsolete */
  1784.       &apphdr,
  1785. ***************
  1786. *** 87,92 ****
  1787. --- 79,93 ----
  1788.       &exphdr,
  1789.       &sendhdr,
  1790.       &xrefhdr,        /* for -b only */
  1791. +     NULL
  1792. + };
  1793. + hdrlist reqdhdrs = {
  1794. +     &msghdr,
  1795. +     &ngshdr,
  1796. +     &pathhdr,        /* modified by hdrmunge.c (emithdr()) */
  1797. +     &subjhdr,
  1798. +     &datehdr,
  1799. +     &fromhdr,
  1800.       NULL
  1801.   };
  1802.   
  1803.  
  1804.  
  1805.  
  1806. *** util/ctime.c.mastercopy    Mon Oct 17 23:09:24 1994
  1807. --- util/ctime.c    Sat Oct  1 00:23:30 1994
  1808. ***************
  1809. *** 6,15 ****
  1810.   #include <ctype.h>
  1811.   #include <time.h>
  1812.   #include <sys/types.h>
  1813.   
  1814.   /* imports */
  1815. ! extern long atol();
  1816. ! extern char *malloc(), *ctime(), *asctime();
  1817.   extern struct tm *gmtime();
  1818.   extern time_t time();
  1819.   extern char *ascingmtime();
  1820. --- 6,15 ----
  1821.   #include <ctype.h>
  1822.   #include <time.h>
  1823.   #include <sys/types.h>
  1824. + #include <stdlib.h>
  1825.   
  1826.   /* imports */
  1827. ! extern char *ctime(), *asctime();
  1828.   extern struct tm *gmtime();
  1829.   extern time_t time();
  1830.   extern char *ascingmtime();
  1831.  
  1832.  
  1833.  
  1834. *** util/sizeof.c.mastercopy    Mon Oct 17 23:09:24 1994
  1835. --- util/sizeof.c    Mon Oct  3 12:48:27 1994
  1836. ***************
  1837. *** 17,23 ****
  1838.   off_t multiplier = 1;
  1839.   char *progname;
  1840.   
  1841. ! extern void error(), exit();
  1842.   
  1843.   /*
  1844.    - main - do it all
  1845. --- 17,23 ----
  1846.   off_t multiplier = 1;
  1847.   char *progname;
  1848.   
  1849. ! extern void error();
  1850.   
  1851.   /*
  1852.    - main - do it all
  1853.  
  1854.  
  1855.  
  1856. *** util/makefile.mastercopy    Mon Oct 17 23:09:24 1994
  1857. --- util/makefile    Sun Oct  9 23:18:57 1994
  1858. ***************
  1859. *** 20,25 ****
  1860. --- 20,32 ----
  1861.   
  1862.   cmp:    $(ALL)
  1863.       @$(IN) $(DEST) $(ALLNB)
  1864. +     : the numbers here do not matter, but all the spacefors should succeed
  1865. +     $(DEST)/spacefor 1000 incoming
  1866. +     $(DEST)/spacefor 1000 articles
  1867. +     $(DEST)/spacefor 1000 control
  1868. +     $(DEST)/spacefor 1000 outbound
  1869. +     $(DEST)/spacefor 1000 batchfiles
  1870. +     $(DEST)/spacefor 1000 archive
  1871.   
  1872.   $(BINS):    $(LIB)
  1873.   
  1874. ***************
  1875. *** 90,95 ****
  1876. --- 97,107 ----
  1877.   
  1878.   r:    $(ALL) rclean
  1879.       $(MX) $(PROGS)
  1880. +     : If this fails, your make is broken, and later regression tests
  1881. +     : would fail spuriously for that reason.
  1882. +     echo $$NEWSARTS >tmp.mc
  1883. +     test " `cat tmp.mc`" = " " ;
  1884. +     : looks like make is okay
  1885.       # 756362361 is Mon, 20 Dec 1993 04:39:21 GMT -- checked by calculator
  1886.       : ctime
  1887.       test "`./ctime -u 756362361`" = "Mon Dec 20 04:39:21 1993"
  1888.  
  1889.  
  1890.  
  1891. *** util/dostatfs.c.mastercopy    Mon Oct 17 23:09:25 1994
  1892. --- util/dostatfs.c    Mon Oct 17 20:32:17 1994
  1893. ***************
  1894. *** 19,30 ****
  1895.   #include <sys/statfs.h>
  1896.   #endif
  1897.   
  1898. - #define    f_fsize    f_bsize        /* idiotic incompatible naming in 4.4 */
  1899.   #endif    /* MNAMELEN */
  1900.   
  1901.   extern int debug;
  1902.   
  1903. ! extern void error(), exit();
  1904.   
  1905.   /*
  1906.    - spacefor - do the work
  1907. --- 19,33 ----
  1908.   #include <sys/statfs.h>
  1909.   #endif
  1910.   
  1911.   #endif    /* MNAMELEN */
  1912.   
  1913. + #ifdef BSD4_4
  1914. + #define    f_fsize    f_bsize        /* idiotic incompatible naming in 4.4 */
  1915. + #endif
  1916.   extern int debug;
  1917.   
  1918. ! extern void error();
  1919.   
  1920.   /*
  1921.    - spacefor - do the work
  1922.  
  1923.  
  1924.  
  1925. *** util/dostatvfs.c.mastercopy    Mon Oct 17 23:09:25 1994
  1926. --- util/dostatvfs.c    Mon Oct  3 12:49:20 1994
  1927. ***************
  1928. *** 11,17 ****
  1929.   
  1930.   extern int debug;
  1931.   
  1932. ! extern void error(), exit();
  1933.   
  1934.   /*
  1935.    - spacefor - do the work
  1936. --- 11,17 ----
  1937.   
  1938.   extern int debug;
  1939.   
  1940. ! extern void error();
  1941.   
  1942.   /*
  1943.    - spacefor - do the work
  1944.  
  1945.  
  1946.  
  1947. *** util/doultrix.c.mastercopy    Mon Oct 17 23:09:26 1994
  1948. --- util/doultrix.c    Mon Oct  3 12:49:24 1994
  1949. ***************
  1950. *** 10,16 ****
  1951.   
  1952.   extern int debug;
  1953.   
  1954. ! extern void error(), exit();
  1955.   
  1956.   /*
  1957.    - spacefor - do the work
  1958. --- 10,16 ----
  1959.   
  1960.   extern int debug;
  1961.   
  1962. ! extern void error();
  1963.   
  1964.   /*
  1965.    - spacefor - do the work
  1966.  
  1967.  
  1968.  
  1969. *** util/doustat.c.mastercopy    Mon Oct 17 23:09:26 1994
  1970. --- util/doustat.c    Mon Oct  3 12:49:29 1994
  1971. ***************
  1972. *** 10,16 ****
  1973.   
  1974.   extern int debug;
  1975.   
  1976. ! extern void error(), exit();
  1977.   
  1978.   /*
  1979.    - spacefor - do the work
  1980. --- 10,16 ----
  1981.   
  1982.   extern int debug;
  1983.   
  1984. ! extern void error();
  1985.   
  1986.   /*
  1987.    - spacefor - do the work
  1988.  
  1989.  
  1990.  
  1991. *** util/dowhatever.c.mastercopy    Mon Oct 17 23:09:26 1994
  1992. --- util/dowhatever.c    Mon Oct  3 12:50:05 1994
  1993. ***************
  1994. *** 5,17 ****
  1995.   #include <stdio.h>
  1996.   #include <string.h>
  1997.   #include <sys/types.h>
  1998.   
  1999.   long bperi = 1000000000L;    /* how many bytes per inode? */
  2000.   
  2001.   int debug = 0;
  2002.   char *progname;
  2003. - extern void error(), exit();
  2004.   
  2005.   /*
  2006.    - main - parse arguments and handle options
  2007. --- 5,16 ----
  2008.   #include <stdio.h>
  2009.   #include <string.h>
  2010.   #include <sys/types.h>
  2011. + #include <stdlib.h>
  2012.   
  2013.   long bperi = 1000000000L;    /* how many bytes per inode? */
  2014.   
  2015.   int debug = 0;
  2016.   char *progname;
  2017.   
  2018.   /*
  2019.    - main - parse arguments and handle options
  2020.  
  2021.  
  2022.  
  2023. *** util/namecheck.t.mastercopy    Mon Oct 17 23:09:27 1994
  2024. --- util/namecheck.t    Fri Oct 14 11:05:50 1994
  2025. ***************
  2026. *** 2,16 ****
  2027.   a.b
  2028.   
  2029.   # dots
  2030. ! .a.b        bad dot(s) in name
  2031. ! a.b.        bad dot(s) in name
  2032. ! a..b        bad dot(s) in name
  2033. ! .        bad dot(s) in name
  2034.   
  2035.   # odd starts
  2036. ! 0.a        name does not begin with a letter
  2037. ! +.a        name does not begin with a letter
  2038. ! A.a        uppercase letter(s) in name
  2039.   control.foo    name starts with control or junk
  2040.   junk.blah    name starts with control or junk
  2041.   
  2042. --- 2,16 ----
  2043.   a.b
  2044.   
  2045.   # dots
  2046. ! .a.b    bad dot(s) in name
  2047. ! a.b.    bad dot(s) in name
  2048. ! a..b    bad dot(s) in name
  2049. ! .    bad dot(s) in name
  2050.   
  2051.   # odd starts
  2052. ! 0.a    name does not begin with a letter
  2053. ! +.a    name does not begin with a letter
  2054. ! A.a    uppercase letter(s) in name
  2055.   control.foo    name starts with control or junk
  2056.   junk.blah    name starts with control or junk
  2057.   
  2058. ***************
  2059. *** 37,43 ****
  2060.   comp.lang.c__    repeated punctuation in name
  2061.   comp.lang.c.c    repeated component(s) in name
  2062.   comp.c.lang.c
  2063. ! comp.lang.=c        name component resembles encoded word but isn't one
  2064.   comp.lang.=?a?b?x?    name component resembles encoded word but isn't one
  2065.   comp.lang.=?a?b?x??    name component resembles encoded word but isn't one
  2066.   comp.lang.=?=a?b?x?=    name component resembles encoded word but isn't one
  2067. --- 37,43 ----
  2068.   comp.lang.c__    repeated punctuation in name
  2069.   comp.lang.c.c    repeated component(s) in name
  2070.   comp.c.lang.c
  2071. ! comp.lang.=c    name component resembles encoded word but isn't one
  2072.   comp.lang.=?a?b?x?    name component resembles encoded word but isn't one
  2073.   comp.lang.=?a?b?x??    name component resembles encoded word but isn't one
  2074.   comp.lang.=?=a?b?x?=    name component resembles encoded word but isn't one
  2075.  
  2076.  
  2077.  
  2078. end of patch CR.A
  2079.